package com.zp.self.module.level_4_算法练习.算法.深度优先搜索.递归;
import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_965_单值二叉树 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_965_单值二叉树().new Solution();
        System.out.println(solution);
    }

    /**
     题目：如果二叉树每个节点都具有相同的值，那么该二叉树就是单值二叉树。
         只有给定的树是单值二叉树时，才返回 true；否则返回 false。

         示例 1：
         输入：[1,1,1,1,1,null,1]
         输出：true

         示例 2：
         输入：[2,2,2,5,2]
         输出：false

     分析：【P 💖】
        1.递归：判断当前节点是否与左右节点相等
                --执行耗时:0 ms,击败了100.00% 的Java用户
                --编码耗时:[3:06]

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {}
    TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

class Solution {
    public boolean isUnivalTree(TreeNode root) {
        if(root.left!=null && (root.left.val!=root.val || !isUnivalTree(root.left)))
                return false;
        return root.right == null || (root.right.val == root.val && isUnivalTree(root.right));
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}